home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
macros
/
latex209
/
contrib
/
harvard
/
harvard.sty
< prev
next >
Wrap
Text File
|
1994-06-16
|
6KB
|
160 lines
%% Author: Peter Williams peterw@archsci.arch.su.edu.au
\message{harvard bibliography,}
\def\@hiteml[#1]#2#3#4{\item[]\if@filesw%
{ \def\protect##1{\string ##1\space}\immediate%
\write\@auxout{\string\harvardcite{#4}{#2}{#1}{#3}}}\fi%
\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
\def\@hitem#1#2#3{\item[]\if@filesw%
{ \def\protect##1{\string ##1\space}\immediate%
\write\@auxout{\string\harvardcite{#3}{#1}{#1}{#2}}}\fi%
\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
\def\harvarditem{\@ifnextchar [{\@hiteml}{\@hitem}}
\def\harvardcite#1#2#3#4{
\global\@namedef{bhf@#1}{#2}
\global\@namedef{bha@#1}{#3}
\global\@namedef{bhy@#1}{#4}\global\@namedef{b@#1}{\csname bhf@#1\endcsname}
}
\def\citationmode#1{\gdef\@cite@mode{\csname @cite@#1\endcsname}}
\def\@cite@full{bhf@}
\def\@cite@abbr{bha@}
\def\@cite@default{b@}
\def\@cite@mode{\@cite@default}
\def\cite{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
\def\citeaffixed{\@ifnextchar [{\@tempswatrue\@citeaffixedx}
{\@tempswafalse\@citeaffixedx[]}
}
\def\citeasnoun{\@ifnextchar [{\@tempswatrue\@citexasnoun}
{\@tempswafalse\@citexasnoun[]}
}
\def\possessivecite{\@ifnextchar [{\@tempswatrue\@possessivecitex}
{\@tempswafalse\@possessivecitex[]}
}
\def\citeyear{\@ifnextchar [{\@tempswatrue\@citexyear}
{\@tempswafalse\@citexyear[]}
}
\def\citename{\@ifnextchar [{\@tempswatrue\@citexname}
{\@tempswafalse\@citexname[]}
}
% \def\@enamedef#1{\expandafter\edef\csname #1\endcsname}
% Previous line should be replaced by the following to prevent
% problems with the NFSS. Solution by Bernd Raichle.
\def\@enamedef#1{\expandafter\def\csname #1\expandafter\endcsname\expandafter}
\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
\def\@citea{}\@cite{\@for\@citeb:=#2\do
{\@citea\def\@citea{\@hisep\penalty\@m\ }\@ifundefined
{b@\@citeb}{{\bf ?}\@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{{\csname \@cite@mode\@citeb\endcsname\@hysep\csname bhy@\@citeb\endcsname}%
\global\@enamedef{b@\@citeb}{\csname bha@\@citeb\endcsname}}%
}}{#1}}
\def\@citeaffixedx[#1]#2#3{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
\def\@citea{}\@citeaffixed{\@for\@citeb:=#2\do
{\@citea\def\@citea{\@hisep\penalty\@m\ }\@ifundefined
{b@\@citeb}{{\bf ?}\@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{{\csname \@cite@mode\@citeb\endcsname\@hysep\csname bhy@\@citeb\endcsname}%
\global\@enamedef{b@\@citeb}{\csname bha@\@citeb\endcsname}}%
}}{#1}{#3}}
\def\@citexasnoun[#1]#2{%
\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
\@citeasnoun{{\@ifundefined%
{b@#2}%
{{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
{{\csname \@cite@mode#2\endcsname\ \harvardleft\csname bhy@#2\endcsname}%
\global\@namedef{b@#2}{\csname bha@#2\endcsname}}%
}}{#1}}
\def\@possessivecitex[#1]#2{%
\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
\@citeasnoun{{\@ifundefined%
{b@#2}%
{{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
{{\csname \@cite@mode#2\endcsname's\ \harvardleft\csname bhy@#2\endcsname}%
\global\@namedef{b@#2}{\csname bha@#2\endcsname}}%
}}{#1}}
\def\@citexname[#1]#2{%
\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
\@citename{{\@ifundefined%
{b@#2}%
{{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
{{\csname bhf@#2\endcsname}}%
}}{#1}}
\def\@citexyear[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
\def\@citeayear{}\@citeyear{\@for\@citebyear:=#2\do
{\@citeayear\def\@citeayear{\@hisep\penalty\@m\ }\@ifundefined
{b@\@citebyear}{{\bf ?}\@warning
{Citation `\@citebyear' on page \thepage \space undefined}}%
{{\csname bhy@\@citebyear\endcsname}%
}%
}}{#1}}
\gdef\hysep@agsm{\ }\gdef\hisep@agsm{,}%
\gdef\hysep@dcu{, }\gdef\hisep@dcu{;}%
\gdef\harvand@agsm{\&}
\gdef\harvand@dcu{and}
\let\@hysep\hysep@agsm \let\@hisep\hisep@agsm
\let\harvardand\harvand@agsm
\def\citationstyle#1{%
\global\@namedef{@hysep}{\csname hysep@#1\endcsname}%
\global\@namedef{@hisep}{\csname hisep@#1\endcsname}%
\global\@namedef{harvardand}{\csname harvand@#1\endcsname}}
\gdef\harbl@round{(}\gdef\harbr@round{)}%
\gdef\harbl@square{[}\gdef\harbr@square{]}%
\gdef\harbl@curly{\{}\gdef\harbr@curly{\}}%
\gdef\harbl@angle{$<$}\gdef\harbr@angle{$>$}%
\gdef\harbl@none{}\gdef\harbr@none{}%
\let\harvardleft\harbl@round \let\harvardright\harbr@round
\let\harvardyearleft\harbl@round \let\harvardyearright\harbr@round
\def\harvardparenthesis#1{%
\global\@namedef{harvardleft}{\csname harbl@#1\endcsname}%
\global\@namedef{harvardright}{\csname harbr@#1\endcsname}}
\def\harvardyearparenthesis#1{%
\global\@namedef{harvardyearleft}{\csname harbl@#1\endcsname}%
\global\@namedef{harvardyearright}{\csname harbr@#1\endcsname}}
%DEFAULT DEFINITIONS
\def\@cite#1#2{\harvardleft{#1\if@tempswa , #2\fi}\harvardright}
\def\@citeyear#1#2{\harvardyearleft{#1\if@tempswa , #2\fi}\harvardyearright}
\def\@citeaffixed#1#2#3{\harvardleft#3\ {#1\if@tempswa , #2\fi}\harvardright}
\def\@citeasnoun#1#2{{#1\if@tempswa , #2\fi\harvardright}}
\def\@citename#1#2{{#1\if@tempswa \ \harvardleft#2\harvardright\fi}}
% CHANGE \end{document} - to handle double definitions
\def\enddocument{\@checkend{document}\clearpage\begingroup
\if@filesw \immediate\closeout\@mainaux
\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
\def\bibcite{\@testdef b}%
\def\harvardcite{\@testbibh}\@tempswafalse \makeatletter\input \jobname.aux
\if@tempswa \@warning{Label(s) may have changed. Rerun to get
cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
\def\@testbibh #1#2#3#4{
\def\@tempa{#2}\expandafter
\ifx \csname bhf@#1\endcsname \@tempa
\def\@tempa{#3}\expandafter
\ifx \csname bha@#1\endcsname \@tempa
\def\@tempa{#4}\expandafter
\ifx \csname bhy@#1\endcsname \@tempa
\else \@tempswatrue
\fi
\else \@tempswatrue
\fi
\else
\@tempswatrue
\fi
}